home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / '92_HACK / IR_MAN_ / ATOB_C.OLD next >
Text File  |  1992-06-06  |  1KB  |  78 lines

  1. /* Analog to Binary converter routine.
  2.    By: Mike Neil 6/6/92
  3.    
  4.    */
  5.  
  6. #include "atob.h"
  7.  
  8. long
  9. AnalizeData(unsigned char *TheData, long dataSize) {
  10.     long ammount;
  11.     register long cnt;
  12.     register short delt;
  13.     register short state;
  14.     register short curChar;
  15.     short bitCnt;
  16.     long outVal;
  17.     long counter, duration;
  18.     char bits[20];
  19.     
  20.     
  21.     state = 0;
  22.     bits[12] = 0;
  23.     bitCnt = 0;
  24.     outVal = 0;
  25.     
  26.     for (cnt = 0; cnt < dataSize-1; cnt++) {
  27.         if (TheData[cnt] > 208)
  28.             TheData[cnt] = 0;
  29.         if (TheData[cnt] > 80)
  30.             TheData[cnt] = 255;
  31.         else
  32.             TheData[cnt] = 0;
  33.         
  34.         curChar = TheData[cnt];
  35.         if ((curChar == 0) && (state == 0)) {
  36.             state = 1;
  37.             counter = 0;
  38.         }
  39.         if ((curChar == 0) && (state == 1)) {
  40.             counter++;
  41.         }
  42.         if ((curChar == 255) && (state == 1) && (counter > 8)) {
  43.             state = 2;
  44.         }
  45.         if ((curChar == 0) && (state == 2)) {
  46.             state = 3;
  47.             counter = cnt;
  48.         }
  49.         if ((curChar == 255) && (state == 3)) {
  50.             state = 4;
  51.         }
  52.         if ((curChar == 0) && (state == 4)) {
  53.             duration = cnt - counter;
  54.             state = 3;
  55.             counter = cnt;
  56.             if (duration > 35) {
  57.                 bits[bitCnt] = '1';
  58.                 outVal = outVal | (1L << bitCnt);
  59.             } else
  60.                 bits[bitCnt] = '0';
  61.             bitCnt++;
  62.             if (bitCnt > 11) {
  63.                 state = 5;
  64.                 return (outVal);
  65. /*                printf ("xxx %s xxx\n", bits); */
  66.             }
  67.         }
  68.         if ((curChar == 255) && (state == 5)) {
  69.             state = 0;
  70.             bits[12] = 0;
  71.             bitCnt = 0;
  72.             outVal = 0;
  73.         }
  74.     }
  75.     return(0);
  76. }
  77.  
  78.